using System;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Common;
using DataAccess;
using Microsoft.ApplicationBlocks.Data;

namespace BusinessRules
{
    public class Indicadores
    {

        private string MET_ID_PARAM = "@MET_ID";
        private string ICL_ID_PARAM = "@ICL_ID";
        private string IME_ID_PARAM = "@IME_ID";


        private string AAM_FECHA_INICIAL_PARAM = "@AAM_FECHA_INICIAL";
        private string AAM_FECHA_FINAL_PARAM = "@AAM_FECHA_FINAL";


        #region CadenaConexion

        private string _CadenaConexion;
        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

        #endregion

        #region Indicadores

        public Indicadores(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;
        }

        #endregion

        #region ConsultarIndicadoresGraficos

        public DataTable ConsultarIndicadoresGraficos(Decimal decMetId)
        {
            SqlParameter param1 = new SqlParameter(MET_ID_PARAM, decMetId);
            SqlParameter[] parameters = { param1 };
            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_GRAFICO_INDICADOR_MET_ID", objDatatable, parameters);
            return objDatatable;
        }

        #endregion



        #region ConsultarMetadatosClasificacion

        public DataTable ConsultarMetadatosClasificacion(Decimal decIclId)
        {
            SqlParameter param1 = new SqlParameter(ICL_ID_PARAM, decIclId);
            SqlParameter[] parameters = { param1 };
            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_IND_METADATOS_IND_CLASIFICACION_ICL_ID", objDatatable, parameters);
            return objDatatable;
        }

        #endregion


        #region ConsultarMetadatosClasificacion

        public DataTable ConsultarMetadatosClasificacionIme(Decimal decImeId)
        {
            SqlParameter param1 = new SqlParameter(IME_ID_PARAM, decImeId);
            SqlParameter[] parameters = { param1 };
            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_IND_METADATOS_IND_CLASIFICACION_IME", objDatatable, parameters);
            return objDatatable;
        }

        #endregion



        #region ConsultarIndicadoresGraficosRangoFechas

        public DataTable ConsultarIndicadoresGraficosRangoFechas(Decimal decImeId, string straamFechaInicial, string straamFechaFinal)
        {
            SqlParameter param1 = new SqlParameter(IME_ID_PARAM, decImeId);
            SqlParameter param2 = new SqlParameter(AAM_FECHA_INICIAL_PARAM, straamFechaInicial);
            SqlParameter param3 = new SqlParameter(AAM_FECHA_FINAL_PARAM, straamFechaFinal);
            SqlParameter[] parameters = { param1, param2, param3 };
            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_GRAFICO_INDICADOR_MET_ID_RANGO_FECHAS", objDatatable, parameters);
            return objDatatable;
        }

        #endregion

        #region ConsultarIndicadoresGraficosRangoFechasResumen

        public DataTable ConsultarIndicadoresGraficosRangoFechasResumen(Decimal decImeId, string straamFechaInicial, string straamFechaFinal)
        {
            SqlParameter param1 = new SqlParameter(IME_ID_PARAM, decImeId);
            SqlParameter param2 = new SqlParameter(AAM_FECHA_INICIAL_PARAM, straamFechaInicial);
            SqlParameter param3 = new SqlParameter(AAM_FECHA_FINAL_PARAM, straamFechaFinal);
            SqlParameter[] parameters = { param1, param2, param3 };
            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_GRAFICO_INDICADOR_MET_ID_RANGO_FECHAS_RESUMEN", objDatatable, parameters);
            return objDatatable;
        }

        #endregion

        

        public DataTable ConsultarIndClasificacion()
        {

            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_INDICADORES_CLASIFICACION", objDatatable);
            return objDatatable;
        }


        //////////////////////////////////////////
        //                 METADATOS            //
        //////////////////////////////////////////

        #region ConsultarMetadatos

        public DataTable ConsultarMetadatos()
        {
            DataTable objDatatable = new DataTable();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_IND_METADATOS_TODOS", objDatatable);
            return objDatatable;
        }

        #endregion

        #region ConsultarMetadatosAccion

        public DataTable ConsultarMetadatosAccion(string strMET_ID)
        {
            DataTable objDatatable = new DataTable();
            SqlParameter param1 = new SqlParameter("@MET_ID", strMET_ID);
            SqlParameter[] parameters = new SqlParameter[] { param1 };
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_IND_METADATOS_ACCION", objDatatable, parameters);
            return objDatatable;
        }

        #endregion


        #region Eliminar Relacion Metadatos

        public int EliminarRelacionMetadatosMetas(string strMET_ID)
        {
            try
            {
                int resultado = 0;
                SqlParameter param1 = new SqlParameter("@MET_ID", strMET_ID);
                SqlParameter[] parameters = new SqlParameter[] { param1 };
                resultado = SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_ACCION_META_IND_METADATOS", parameters);
                return resultado;
            }
            catch (Exception objEx)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ADM_PERMISOS"), objEx);
            }
        }

        #endregion

        #region AdicionarRelacionMetadatos

        public int AdicionarRelacionMetadatos(string strMET_ID, string strIME_ID)
        {
            //DataTable objDT = objDS[AdmPermisosData.ADM_PERMISOS_TABLE];
            int intCounter = 0;
            try
            {
                // Eliminar primero todos los permisos que tiene el usuario asignados
                EliminarRelacionMetadatosMetas(strMET_ID);

                if (strIME_ID != "")
                {
                    SqlParameter param1 = new SqlParameter("@MET_ID", strMET_ID);
                    SqlParameter param2 = new SqlParameter("@IME_ID", strIME_ID);
                    SqlParameter[] parameters = new SqlParameter[] { param1, param2 };
                    intCounter = intCounter + SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ADICIONAR_SIG_ACCION_META_IND_METADATOS", parameters);
                }

            }

            catch (Exception objEx)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ADM_PERMISOS"), objEx);
            }
            return intCounter;
        }

        #endregion


    }
}
